草庐IT

c++ - 虚拟的概念

全部标签

CreateProcessWithLogonW 和 AssignProcessToJobObject

我有一个Windows服务(在WinXPSP2下),在LocalSystem帐户下运行,它使用CreateProcessWithLogonW启动进程。为了清理子进程,我尝试使用作业对象和TerminateJobObject。MSDN声明作业句柄必须具有JOB_OBJECT_ASSIGN_PROCESS访问权限,因为它是通过CreateJobObject创建的。进程句柄必须具有PROCESS_SET_QUOTA和PROCESS_TERMINATE权限。我认为它有它们,因为TerminateProcess和SetProcessWorkingSetSize都没有错误地返回。但是,Assign

Windows 32 位虚拟内存页面映射问题

我正在从这里学习Windows32位虚拟内存页面映射,(我的目标是现代Windows版本,例如Vista、Win7、Server2003/200832位版本。)http://blogs.msdn.com/ericlippert/archive/2009/06/08/out-of-memory-does-not-refer-to-physical-memory.aspx两个困惑,用户空间虚拟内存空间通常限制为2G,但物理磁盘页面存储可能远大于2G。由于磁盘页面的数量多于虚拟内存页面的数量,因此理论上可以将多个磁盘页面映射到一个虚拟地址页面。如果用户请求访问某个虚拟地址,如果多个磁盘页面映

c - Windows 上的共享内存,可以由单独的进程访问(读取和写入)

我可以在Windows上使用共享内存,以便拥有一个可供多个独立进程使用的公共(public)内存区域吗?上下文:将unix应用程序移植到Windows,它具有:-创建多个共享内存区域的“设置”过程。-一组其他进程(在设置过程已经完成时运行)读取(偶尔写入)已准备好的内存区域设置过程我已经尝试过CreateFileMapping(INVALID_HANDLE_VALUE,...)/OpenFileMapping但共享内存似乎在创建进程退出后立即被释放。我应该创建真实的(即在文件系统上的)文件并打开这些文件而不是使用INVALID_HANDLE_VALUE吗?

c - _popen 在同时具有标准输出和标准输入的 Windows 中

如何在c中同时使用stdin和stdoutpopen? 最佳答案 下面的文章给出了一个例子。比较啰嗦,可以把相关部分删掉。http://support.microsoft.com/kb/190351 关于c-_popen在同时具有标准输出和标准输入的Windows中,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1538436/

c - stdout 上的 freopen_s 导致 Windows 上的 GetConsoleScreenBufferInfo 出现问题

要临时将stdout重定向到一个文件,我正在做:printf("Before");freopen_s(&stream,"test.txt","w",stdout);printf("During");freopen_s(&stream,"CONOUT$","w",stdout);printf("After");这行得通,但是这样做:CONSOLE_SCREEN_BUFFER_INFOsbi={0};GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),&sbi);似乎不再有效。它返回false,GetLastError()返

c - 如何以可移植的方式创建流程?

我正在尝试编写一个需要创建其他进程的程序。我已经习惯了WindowsAPI,但现在我需要我的程序也能够在Linux平台上运行。有没有可能以便携的方式做到这一点?我必须为此目的使用预处理器吗?编辑:我需要等待它完成才能继续做事。 最佳答案 在我看来,应该始终避免使用系统函数:它不可靠,因为您不知道哪个shell将处理您的命令,并且它没有办法返回明确的错误代码。此外,在Windows等平台上,进程非常重,启动一个新进程只是为了启动另一个进程并不是一个好主意,顺便说一下,一些安全套件可能会为您的应用程序尝试启动的每个进程发出警告,并且将此

c++ - 如何知道磁盘是基本磁盘还是动态磁盘?

在Windows中,是否可以通过C/C++程序知道我们正在处理的是哪种磁盘?忘记gpt或mbr,如何知道它是基本的还是动态的?程序输入可以是盘符或任何与磁盘相关的信息,输出应该是动态的或基本的。不需要直接的方法,即使它是一个漫长的过程,也可以。我在msdn中找不到太多。请帮帮我。 最佳答案 Windows中有一种方法,但不是直截了当的。没有直接的API来确定磁盘是基本磁盘还是动态磁盘,但是所有动态磁盘都会有LDM信息。因此,如果一个驱动器上有一个包含LDM信息的分区,那么它将是一个动态磁盘。带有IOCTL_DISK_GET_DRIV

windows - 为什么在 Windows Vista x64 上调用 GlobalMemoryStatus 时可用物理内存 (dwAvailPhys) > 可用虚拟内存 (dwAvailVirtual)

我正在使用MSDN样本进行内存压力测试(请参阅:http://msdn.microsoft.com/en-us/magazine/cc163613.aspx)和专门占用物理内存的该工具的扩展(请参阅http://www.donationcoder.com/Forums/bb/index.php?topic=14895.0;prev_next=next)。我显然对虚拟内存和物理内存之间的区别感到困惑。我以为每个进程都有2GB的虚拟内存(虽然我也读了1.5GB因为“开销”)。我的理解是这个虚拟内存的一些/全部/没有可能是物理内存,而一个进程使用的物理内存量进程可能会随着时间的推移而改变(内

c++ - 如何在 Windows 中以编程方式查找动态加载的模块(静态模块)

我正在尝试将unix实用程序ldd移植到Windows,因为dependencywalker和cygcheck并没有完全提供我正在寻找的用法。(也是为了学习经验)我一直在MSDN上寻找一个列出可执行文件的dll依赖项的WindowsAPI,甚至是编译后的exe中的存储格式(只是为了过滤掉它),但我一直无法找到任何东西。如果有人知道Windows使用什么API调用来列出要加载的模块,或者我可以在可执行文件中搜索什么模式来找到要加载的模块,请帮助我:)谢谢!-注意:我不打算分析动态模块,只是列出运行时需要的模块 最佳答案 在exe导入表

sql-server - 从跨平台应用程序连接到 MS SQL Server

我正在开发一个GUI应用程序,该应用程序将用于对AI算法生成的大型数据集执行“手动评估”。评估的性质对这个问题并不重要;只是程序需要从服务器定期检查新数据,下载,然后上传结果,用户产生。就这个问题而言,每个数据集只是一个二进制blob。将托管数据的机器当前设置有MicrosoftSQLServer。出于管理原因,我可能不得不使用SQLServer(而不是在同一台机器上运行的Web服务器)来存储数据。我知道SQL,但我怀疑我在学习Microsoft版本的SQL时会遇到困难。这是困难的部分:该程序需要在MacOSX和Windows上运行。我在Windows开发方面没有太多经验,我的大部分代